import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store/index'

// 全局配置
import './assets/css/reset.css' // 要放在element.css之前 才能覆盖element.css
import 'element-ui/lib/theme-chalk/index.css'
import http from './api/config' // 引入axios
import './mock/index' // 引入mock数据

// 第三方包
import ElementUI from 'element-ui'

Vue.config.productionTip = false
Vue.use(ElementUI)
Vue.prototype.http = http // 全局挂载axios

// 路由拦截
router.beforeEach((to, from, next) => {
  // 防止刷新后vuex里丢失token
  store.commit('getToken')
  // 防止刷新后vuex里丢失标签列表tagList
  store.commit('getMenu')
  // 防止刷新后vuex里丢失标签列表getCurrent
  store.commit('getCurrent')
  let token = store.state.user.token
  // 过滤登录页，防止死循环
  if (!token && to.name !== 'Login') {
    // 判断路由是否存在和是否再登录页
    next({
      name: 'Login'
    })
  } else {
    next()
  }
})

new Vue({
  router,
  store,
  render: h => h(App),
  created() {
    // 刷新或初始化vue，并把当前路由传过去
    store.commit('addMenu', router)
  }
}).$mount('#app')
